package gui_kalenderpanel;
import java.awt.Dimension;
import model.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.ArrayList;

import javax.swing.*;
import javax.swing.event.*;

public class BeskjedPanel extends JPanel implements PropertyChangeListener {
	
	JLabel kasseBilde;
	ImageIcon postKasse;
	JList beskjedListe;
	DefaultListModel lm;
	Bruker bruk;
	
	private PropertyChangeSupport pcs;
	
	public BeskjedPanel(Bruker bru) {
		
		postKasse = new ImageIcon("postkasse.jpg");
		lm = new DefaultListModel();
		pcs = new PropertyChangeSupport(this);
		bruk = bru;
		bruk.addPropertyChangeListener(this);
		
		kasseBilde = new JLabel(postKasse);
		add(kasseBilde);
		
		Beskjed tittel = new Beskjed();
		tittel.setFra("Beskjeder: ");
		lm.addElement(tittel);
		
		ArrayList<Beskjed> temp = bruk.getBeskjeder();
		for (Beskjed n: temp) {
			lm.addElement(n);
		}
		
		beskjedListe = new JList(lm);
		beskjedListe.setCellRenderer(new BeskjedRenderer());
		beskjedListe.addListSelectionListener(new ListSelectionListener() {
			public void valueChanged(ListSelectionEvent e) {
				if (beskjedListe.getSelectedIndex() != 0) {
					Beskjed temp = (Beskjed) beskjedListe.getSelectedValue();
					pcs.firePropertyChange("velgbeskjed", null, temp);
					beskjedListe.setSelectedIndex(0);
					if (temp.getType().equals(BeskjedType.avlysning)) {
						lm.removeElement(temp);
						bruk.fjernBeskjed(temp);
					}
					
				}
			}
		});
		JScrollPane scroll = new JScrollPane(beskjedListe);
		scroll.setPreferredSize(new Dimension(225,175));
		add(scroll);		
	}
	
	//metode for aa "return"e beskjeden som var valgt
	public Beskjed getBeskjed(int i) {
		return (Beskjed) beskjedListe.getSelectedValue();
	}
	
	public void setSelected(int i) {
		beskjedListe.setSelectedIndex(i);
	}
	
	
	public void propertyChange(PropertyChangeEvent evt) {
		if (evt.getPropertyName().equals(Bruker.NY_BESKJED_BRUKER)) {
			lm.addElement(evt.getNewValue());
			if (evt.getOldValue() != null) {
				lm.removeElement((Beskjed) evt.getOldValue());
			}
		}
		if (evt.getPropertyName().equals(Bruker.FJERN_BESKJED_BRUKER)) {
			lm.removeElement((Beskjed) evt.getOldValue());
		}
	}
	
	public void addPropertyChangeListener(PropertyChangeListener listener) {
		pcs.addPropertyChangeListener(listener);
	}
}
